package hotel.meituan.oversea.api.vo.overseaRequestVO;

import hotel.meituan.oversea.api.vo.overseaRequestVO.pojo.GuestInfoListRoom;
import hotel.meituan.oversea.api.vo.overseaResponceVO.pojo.PreferenceGroup;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;

import javax.validation.constraints.Max;
import javax.validation.constraints.NotNull;
import java.util.List;

@Data
public class MtHotelOrderBookingVO {
    /**
     * 境外酒店ID。
     */
    @NotNull(message = "境外酒店ID不能为空")
    private Long hotelId;
    /**
     * 分销商订单ID，非空
     */
    @NotNull(message = "分销商订单ID不能为空")
    private String distributorOrderId;
    /**
     * 产品ID。
     */
    @NotNull(message = "产品ID不能为空")
    private Long goodsId;
    /**
     * 每间房成人数量，上限8人
     */
    @NotNull(message = "成人数量不能为空")
    @Max(value = 8,message = "成人数量不能超过8人")
    private Integer numberOfAdults;
    /**
     * 每间房儿童数量，上限3人
     */
    @NotNull(message = "儿童数量不能为空")
    @Max(value = 8,message = "儿童数量不能超过3人")
    private Integer numberOfChildren;
    /**
     * 儿童年龄，如：6,12。 儿童数量>0时必填，用英文逗号分割。
     */

    private String childrenAges;
    /**
     * 入住人信息的集合(区分房间、是否成年)
     */
    @NotNull(message = "入住人信息不能为空")
    private List<GuestInfoListRoom> guestList;
    /**
     * 联系人姓名。
     */
    @NotNull(message = "联系人姓名不能为空")
    private String contactName;
    /**
     * 联系人电话区号，例如86。
     */
    @NotNull(message = "联系人电话区号不能为空")
    private String interCode;
    /**
     * 联系人电话号码。
     */
    @NotNull(message = "联系人电话号码不能为空")
    private String contactPhone;
    /**
     * 联系人邮箱。
     */
    @NotNull(message = " 联系人邮箱不能为空")
    private String contactEmail;
    /**
     * 入住日期，格式为yyyy-MM-dd。
     */
    @NotNull(message = "入住日期不能为空")
    private String checkinDate;
    /**
     * 离店日期，格式为yyyy-MM-dd。
     */
    @NotNull(message = "离店日期不能为空")
    private String checkoutDate;
    /**
     * 预订间数，最大8间。
     */
    @NotNull(message = "预订间数不能为空")
    private Integer roomNum;
    /**
     * 订单总价，单位为分。总价=预订房间数x预订日期内房间单价。例如，4月1日入住，4月3日离店，预订2间房，则总价=2*(4月1日房价+4月2日房价）
     */
    @NotNull(message = "订单总价不能为空")
    private Integer totalPrice;
    /**
     * 入住人特殊偏好内容，若验价返回了PreferenceGroup，则下单时必传PreferenceGroup，并保证每个type只选择一种id，若验价未返回则不需要传入住偏好
     */
    private List<PreferenceGroup> preferenceGroupList;
    /**
     * 用户预约下单时填写的备注信息,且必须为英文,不能超过512字符。
     */
    private String comment;
    /**
     * 币种，ISO 4217货币代码，目前仅支持人民币（CNY）。
     */
    private String currencyCode;
    /**
     * 入住人国籍，两位ISO国家代码，详见ISO 国家代码，目前仅支持中国大陆国籍（CN）客人入住。
     */
    private String clientNationality;
}
